1. Field of the Invention
The present invention is generally directed to computing systems. More particularly, the present invention is directed to computing systems performing graphics processing operations.
2. Background Art
A graphics processing unit (GPU) is a special-purpose integrated circuit optimized for graphics processing operations. GPUs are often incorporated into computing devices (e.g., personal computers, rendering farms or servers, handheld devices, digital televisions, etc.) and are used for executing applications with demanding graphics processing needs, such as, for example, video game applications.
Several layers of software exist between an end-user application and a GPU. The end-user application communicates with an application programming interface (API). An API allows the end-user application to output graphics data and commands in a standardized format, rather than in a format that is dependent on the GPU. The API communicates with a driver which translates standard code, received from the API, into a native format of instructions understood by the GPU. The driver is typically written by the manufacturer of the GPU.
In most modern GPU implementations, the processing of graphics operations is broken into various functional units, each located within a different stage of a processing pipeline. A GPU may implement a unified shader model in which a sequence of shaders is implemented. One of these shaders can be, for example, a tessellation shader. The tessellation shader enables a user to input higher order surfaces and have the GPU hardware tessellate a geometric patch into a grid of primitives for further processing. Typically, input to the GPU is provided in the form of a set of vertices, along with connectivity information defining an interconnection of the vertices. As understood by one of skill in the art, the set of vertices, along with associated connectivity information, defines a geometric primitive.
Geometric primitives and vertices are produced, for example, within the tessellation shader. The sequence, or order, in which the tessellation engine generates the primitives and vertices is known by those of skill in the art as a walk pattern. A traditional tessellation shader generates vertices of the grid of primitives by following a traditional serpentine like walk pattern. This serpentine walk pattern typically produces a triangle strip and provides approximately one primitive per vertex. The rate of one primitive per vertex results in the need to re-process vertices. This approach is inefficient in that it duplicates work and results in slower overall frame rates.